home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 166 / 166.d81 / b.magic 6 (.txt) < prev    next >
Commodore BASIC  |  2022-08-26  |  7KB  |  278 lines

  1. 10 poke53371,0:poke788,49
  2. 20 poke56,55:poke55,192:clr:tq=ti
  3. 22 sn=1:inc=1
  4. 30 dv=peek(186):ifdv<8thendv=8
  5. 40 poke53281,0:poke53280,0:print"[147]":gosub60000
  6. 50 sys57812"magic 6 font",dv,0:poke780,0:poke781,0:poke782,56:sys65493
  7. 70 sys57812"m6.mousejr.c700",dv,0:poke780,0:poke781,0:poke782,199:sys65493
  8. 80 dimb$(37),b%(37),x%(37),y%(37),xq%(14),yq%(14),q%(14),q$(14),xm%(8),ym%(8)
  9. 90 dimfl%(37),u%(25),b2%(37),q2%(14)
  10. 100 ml=199*256:mv=ml+156:pokemv+1,158:v=53248
  11. 110 sysml:sysml+18,0,38,0,24
  12. 120 pokemv+19,128:sysml+6,14272:pokev+21,0
  13. 130 goto510
  14. 140 :
  15. 150 :rem box
  16. 160 :
  17. 170 poke646,c:poke214,y:print:print"[145]";
  18. 180 printtab(x)"[172]"left$(tp$,xx)"[187]"
  19. 190 foriq=1toyy:printtab(x)"[165]"left$(sp$,xx)"[167]":next
  20. 200 printtab(x)"[188]"left$(bt$,xx)"[190]"
  21. 210 return
  22. 220 :
  23. 230 :rem tote up
  24. 240 :
  25. 250 q%(12)=0:q%(13)=0:fori=0to5:q%(i)=0:q%(i+6)=0:forj=0to5
  26. 260 q%(i)=q%(i)+b%(i*6+j+1)
  27. 270 q%(i+6)=q%(i+6)+b%(j*6+i+1)
  28. 280 next:q$(i)=right$(" "+str$(q%(i)),3)
  29. 290 q$(i+6)=right$(" "+str$(q%(i+6)),3)
  30. 300 q%(13)=q%(13)+b%(1+7*i)
  31. 310 q%(12)=q%(12)+b%(31-5*i)
  32. 320 next
  33. 330 q$(12)=right$(" "+str$(q%(12)),3)
  34. 340 q$(13)=right$(" "+str$(q%(13)),3)
  35. 350 return
  36. 360 :
  37. 370 :rem fill grid
  38. 380 :
  39. 390 poke646,5
  40. 400 fori=1to36:b%(i)=sn+inc*(i-1):b$(i)=""+right$(" "+str$(b%(i)),3)
  41. 410 sysml+12,x%(i)+1,y%(i)+1,b$(i):next
  42. 420 return
  43. 430 :
  44. 440 :rem print totals
  45. 450 :
  46. 460 poke646,7:gosub250:fori=0to13:sysml+12,xq%(i)+1,yq%(i)+1,q$(i):next
  47. 470 return
  48. 480 :
  49. 490 :rem setup
  50. 500 :
  51. 510 tp$="[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
  52. 520 bt$="[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
  53. 530 sp$="@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
  54. 540 k=1:fori=0to5:forj=0to5
  55. 550 x%(k)=3+j*5:y%(k)=4+i*3
  56. 560 sysml+15,k,x%(k),x%(k)+4,y%(k),y%(k)+2
  57. 570 k=k+1:next:next
  58. 580 fori=0to3:readm$(i):next
  59. 590 data"play","help","solve","quit"
  60. 600 fori=0to5:xq%(i)=33:yq%(i)=1+3*i
  61. 610 xq%(i)=33:yq%(i)=4+3*i
  62. 620 xq%(6+i)=3+i*5:yq%(6+i)=22
  63. 630 next
  64. 640 xq%(12)=33:yq%(12)=1:xq%(13)=33:yq%(13)=22
  65. 650 fori=0to3
  66. 660 xm%(i)=4+7*i-(i=3):ym%(i)=0
  67. 670 sysml+15,37+i,xm%(i),xm%(i)+5-(i=2),ym%(i),ym%(i)+2
  68. 680 next
  69. 690 sysml+15,41,11,19,13,15:sysml+15,42,21,29,13,15
  70. 700 fori=1to24:readu%(i):next
  71. 710 data1,36,8,29,15,22,31,6,26,11,21,16,2,32,7,12,10,28,20,23,18,24,33,34
  72. 720 :
  73. 730 :rem screen
  74. 740 :
  75. 750 ifti<tq+100then750
  76. 752 print"[147]":poke53272,31
  77. 754 c=5:xx=3:yy=1:fori=0to5:forj=0to5:x=3+j*5:y=4+i*3:gosub170:next:next
  78. 760 c=7:fori=0to6:x=3+i*5:y=22:gosub170:next
  79. 770 fori=0to6:x=33:y=1+3*i:gosub170:next
  80. 780 c=15:fori=0to3:x=xm%(i):y=ym%(i):xx=4-(i=2):yy=1:gosub170
  81. 790 sysml+12,xm%(i)+1,ym%(i)+1,m$(i)
  82. 800 next
  83. 810 m6$="magic6":print"[146]";
  84. 820 fori=1to6:sysml+12,1,2+3*i,mid$(m6$,i,1):next
  85. 830 sysml+39,64
  86. 840 pokemv+2,40:pokev+21,3
  87. 850 :
  88. 860 :rem main loop
  89. 870 :
  90. 880 sysml+9
  91. 890 ifcr%<37orcr%>40then880
  92. 900 ft%=cr%:sysml+36,ft%,255,13
  93. 910 onft%-36gosub970,1490,1750,2160
  94. 920 sysml+36,ft%,255,15
  95. 930 goto880
  96. 940 :
  97. 950 :rem play
  98. 960 :
  99. 970 gosub390:gosub460
  100. 980 co=0:d%(0)=0:d%(1)=0
  101. 990 sysml+9
  102. 1000 ifcr%=0then990
  103. 1010 ifcr%<37then1050
  104. 1020 ifcr%=37thensysml+42,64:return
  105. 1030 oncr%-37gosub1490,1750,2160
  106. 1040 goto990
  107. 1050 ifcr%=d%(0)thensysml+36,d%(0),255,5:goto980
  108. 1060 d%(co)=cr%
  109. 1070 sysml+36,cr%,255,1
  110. 1080 co=co+1:ifco<2then990
  111. 1090 te=b%(d%(0)):b%(d%(0))=b%(d%(1)):b%(d%(1))=te
  112. 1100 poke646,1
  113. 1110 sysml+12,x%(d%(0))+1,y%(d%(0))+1,right$(" "+str$(b%(d%(0))),3)
  114. 1120 sysml+12,x%(d%(1))+1,y%(d%(1))+1,right$(" "+str$(b%(d%(1))),3)
  115. 1122 gosub30000
  116. 1130 gosub460
  117. 1140 sysml+36,d%(0),255,5:sysml+36,d%(1),255,5
  118. 1150 :
  119. 1160 :rem win?
  120. 1170 :
  121. 1180 fori=0to13:ifq%(i)<>111theni=13:next:goto980
  122. 1190 next
  123. 1200 c=2:x=xm%(0):y=0:xx=11:yy=1:gosub170
  124. 1210 sysml+12,xm%(0)+1,1,"you did it!"
  125. 1220 sysml+12,xm%(2)+1,1,"[155]print"
  126. 1230 sysml+12,xm%(3)+1,1,"done"
  127. 1232 gosub31000
  128. 1240 sysml+9
  129. 1250 ifcr%=39then1310
  130. 1260 ifcr%=40thensysml+42,64:return
  131. 1270 goto1240
  132. 1280 :
  133. 1290 :rem print
  134. 1300 :
  135. 1310 c=8:x=9:y=9:xx=21:yy=7:gosub170
  136. 1320 sysml+12,12,11,"get printer ready
  137. 1330 c[178]15:x[178]11:y[178]13:xx[178]7:yy[178]1:[141]170
  138. 1340 x[178]21:[141]170
  139. 1350 [158]ml[170]12,13,14,"printabort"
  140. 1360 [151]mv[170]2,42
  141. 1370 [158]ml[170]9
  142. 1380 [139]cr%[179]41[167]1370
  143. 1390 [139]cr%[178]42[167][158]ml[170]42,64:[142]
  144. 1400 [159]4,4,7
  145. 1410 k[178]1:[129]i[178]0[164]5:[129]j[178]0[164]5
  146. 1420 [152]4,[201](" "[170][196](b%(k)),3)"  ";:k[178]k[170]1
  147. 1430 [130]:[152]4:[152]4:[130]:[160]4
  148. 1440 [158]ml[170]42,64:[151]186,dv:[142]
  149. 1450 [137]1450
  150. 1460 :
  151. 1470 :[143] help
  152. 1480 :
  153. 1490 [158]ml[170]39,80:[139]h1[167][158]ml[170]42,72:[137]1680
  154. 1500 h1[178]1
  155. 1510 [153]"load"
  156. 1520 c[178]8:x[178]3:y[178]1:xx[178]33:yy[178]20:[141]170
  157. 1530 [158]ml[170]12,6,y[170]2,"ortan^ortan^@ortantan^@ortantan^@=@ortantan^@@ortantan^
  158. 1540 sysml+12,6,y+3,"[221]@[173][189]@[221]@[171][192][192][179]@[221]@[176][174]@[221]@[221]@@@@@[171][192][192][174]
  159. 1550 [158]ml[170]12,6,y[170]4,"exp@@@@/@exp@@/@/tantanexp@>@/tantanexp@@/tantanexp
  160. 1560 sysml+12,5,y+6,"[158] play [129] try to get all rows,
  161. 1570 [158]ml[170]12,5,y[170]7,"columns and diagonals to add up
  162. 1580 sysml+12,5,y+8,"to 111. click on one number,
  163. 1590 [158]ml[170]12,5,y[170]9,"then another to swap them.
  164. 1600 sysml+12,5,y+11,"[158] solve [129] see a pattern of swaps
  165. 1610 [158]ml[170]12,5,y[170]12,"that'll always make a magic
  166. 1620 sysml+12,5,y+13,"square out of any ordered set.
  167. 1630 [158]ml[170]12,5,y[170]15,"click twice on sys play for to start
  168. 1640 sysml+12,5,y+16,"over. when you find a solution
  169. 1650 [158]ml[170]12,5,y[170]17,"you may print it out.
  170. 1660 sysml+12,5,y+19,"        press button
  171. 1670 [158]ml[170]39,72
  172. 1680 [158]ml[170]9
  173. 1690 [139]l2%[178]0[167]1680
  174. 1700 [158]ml[170]42,80
  175. 1710 [142]
  176. 1720 :
  177. 1730 :[143] solve
  178. 1740 :
  179. 1750 [158]ml[170]39,94
  180. 1752 [158]ml[170]36,39,255,13
  181. 1760 c[178]8:x[178]5:y[178]6:xx[178]29:yy[178]10:[141]170
  182. 1770 [158]ml[170]12,7,y[170]2,"here is an easy-to-memorize
  183. 1780 sysml+12,7,y+3,"set of swaps that will make
  184. 1790 [158]ml[170]12,7,y[170]4,"a 6x6 magic square out of
  185. 1800 sysml+12,7,y+5,"any ordered set of numbers.
  186. 1810 c[178]15:x[178]11:y[178]13:xx[178]7:yy[178]1:[141]170
  187. 1820 x[178]21:[141]170
  188. 1830 [158]ml[170]12,13,14,"go onabort"
  189. 1840 [151]mv[170]2,42
  190. 1850 [158]ml[170]9
  191. 1860 [139]cr%[178]41[167]1890
  192. 1870 [139]cr%[178]42[167][151]mv[170]2,40:[158]ml[170]42,94:[142]
  193. 1880 [137]1850
  194. 1890 [129]i[178]1[164]36:b2%(i)[178]b%(i):[130]:[129]i[178]0[164]13:q2%(i)[178]q%(i):[130]
  195. 1900 [158]ml[170]42,64:[141]390:[141]460
  196. 1902 [158]ml[170]36,39,255,13
  197. 1910 [129]w[178]1[164]24[169]2
  198. 1920 [158]ml[170]36,u%(w),255,1:[158]ml[170]36,u%(w[170]1),255,1
  199. 1930 te[178]b%(u%(w)):b%(u%(w))[178]b%(u%(w[170]1)):b%(u%(w[170]1))[178]te
  200. 1940 [151]646,1
  201. 1950 [158]ml[170]12,x%(u%(w))[170]1,y%(u%(w))[170]1,[201](" "[170][196](b%(u%(w))),3)
  202. 1960 [158]ml[170]12,x%(u%(w[170]1))[170]1,y%(u%(w[170]1))[170]1,[201](" "[170][196](b%(u%(w[170]1))),3)
  203. 1970 [141]460:[158]ml[170]24,40
  204. 1980 [158]ml[170]36,u%(w),255,5:[158]ml[170]36,u%(w[170]1),255,5
  205. 1990 [130]
  206. 2000 c[178]2:x[178]xm%(0):y[178]0:xx[178]11:yy[178]1:[141]170
  207. 2002 [158]ml[170]36,39,255,15
  208. 2010 [158]ml[170]12,xm%(0)[170]1,1," that's it "
  209. 2020 [158]ml[170]12,xm%(2)[170]1,1,"listagain"
  210. 2030 [158]ml[170]12,xm%(3)[170]1,1,"done"
  211. 2040 [158]ml[170]9
  212. 2050 [139]cr%[178]39[167]1900
  213. 2060 [139]cr%[178]40[167]2080
  214. 2070 [137]2040
  215. 2080 [158]ml[170]42,94
  216. 2090 [129]i[178]1[164]36:b%(i)[178]b2%(i):[130]
  217. 2100 [129]i[178]0[164]13:q%(i)[178]q2%(i):[130]
  218. 2110 [151]mv[170]2,40:[142]
  219. 2120 [137]2120
  220. 2130 :
  221. 2140 :[143] quit
  222. 2150 :
  223. 2160 [158]ml[170]39,88
  224. 2170 c[178]8:x[178]9:y[178]9:xx[178]21:yy[178]7:[141]170
  225. 2180 [158]ml[170]12,14,11,"are you sure?
  226. 2190 c=15:x=11:y=13:xx=7:yy=1:gosub170
  227. 2200 x=21:gosub170
  228. 2210 sysml+12,13,14," quitabort"
  229. 2220 pokemv+2,42
  230. 2230 sysml+9
  231. 2240 ifcr%=41thensysml+3:pokev+21,0:print"[147]":goto40000
  232. 2250 ifcr%=42thenpokemv+2,40:sysml+42,88:return
  233. 2260 goto2230
  234. 10000 d=peek(186):n$="0:b.magic 6":open15,d,15,"s"+n$:close15:saven$,d:end
  235. 29997 :
  236. 29998